package com.huaxiafinance.management.mapper;

import com.huaxiafinance.management.dto.request.QueryFranchiseeToBeInfoDto;
import com.huaxiafinance.management.dto.response.PartnerVo;
import com.huaxiafinance.management.model.PartnerInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PartnerInfoMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(PartnerInfo record);

    int insertSelective(PartnerInfo record);

    PartnerInfo selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(PartnerInfo record);

    int updateByPrimaryKey(PartnerInfo record);


    List<PartnerInfo> getFranchisee(QueryFranchiseeToBeInfoDto dto);

    /**
     * 获取准加盟商/一级加盟商/二级加盟商列表记录数
     *
     * @param dto
     * @return
     */
    int getFranchiseeCount(QueryFranchiseeToBeInfoDto dto);

    /**
     *
     * @param dto
     * @return
     */
    int getFranchiseeNum(QueryFranchiseeToBeInfoDto dto);



    PartnerInfo selectByUserUuid(@Param("userUuid") String userUuid);

    PartnerInfo queryByUserUuid(@Param("userUuid") String userUuid);


    List<PartnerInfo> selectAllByPages(QueryFranchiseeToBeInfoDto dto);


    Integer selectCount();

    List<PartnerVo> selectByParam(QueryFranchiseeToBeInfoDto dto);

    //获取一级加盟商数量
    Integer selectPFirstInviterByUserUuid(QueryFranchiseeToBeInfoDto dto);
    //获取二级加盟商的数量
    Integer selectPSecondInviterByUserUuid(QueryFranchiseeToBeInfoDto dto);
    //获取准加盟的数量
    Integer selectZInviterByUserUuid(QueryFranchiseeToBeInfoDto dto);
    //查询合伙人信息的总的数量
    Integer selectByParamCount(QueryFranchiseeToBeInfoDto dto);

    PartnerInfo selectOne(String userUuid);




    Integer selectInviterCode(@Param("code")String code);

    PartnerInfo queryInfoByUserUuid(@Param("userUuid")String userUuid);
    //一级加盟商的 uid
    List<String> listOnePar(@Param("userUuid")String userUuid);
    //二级加盟商的 uid
    List<String> listTwoPar(@Param("userUuid")String userUuid);

    PartnerInfo queryByUserId(@Param("userUuid")String userUuid);



    /**
     * 查询二级加盟商个数
     * @param dto
     * @return
     */
    int getSecondNum(QueryFranchiseeToBeInfoDto dto);


    PartnerInfo selectPartnerInfo(@Param("userUuid") String userUuid);

    List<PartnerInfo> getSecFranchisee(QueryFranchiseeToBeInfoDto dto);


}